"""命令行参数解析模块"""
import argparse
import sys
from db2word import __version__


def parse_args():
    """解析命令行参数"""
    parser = argparse.ArgumentParser(
        description="数据库 Schema 文档生成工具 - 自动提取数据库表结构并生成 Word 文档",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog="""
示例:
  %(prog)s --host=localhost --port=3306 --database=myapp_db --type=mysql --user=root --password=123456
  %(prog)s -H localhost -P 5432 -d test_db -t postgresql -u postgres --password 123456
        """
    )
    
    parser.add_argument(
        '--host', '-H',
        default='localhost',
        help='数据库服务器主机地址 (默认: localhost)'
    )
    
    parser.add_argument(
        '--port', '-P',
        type=int,
        help='数据库服务端口 (MySQL 默认: 3306, PostgreSQL 默认: 5432)'
    )
    
    parser.add_argument(
        '--database', '-d',
        required=True,
        help='目标数据库名称 (必需)'
    )
    
    parser.add_argument(
        '--type', '-t',
        required=True,
        choices=['mysql', 'postgresql'],
        help='数据库类型: mysql 或 postgresql (必需)'
    )
    
    parser.add_argument(
        '--user', '-u',
        default='root',
        help='数据库用户名 (默认: root)'
    )
    
    parser.add_argument(
        '--password', '-p',
        default='',
        help='数据库密码 (默认: 空)'
    )
    
    parser.add_argument(
        '--output', '-o',
        help='输出文件路径 (可选，默认: {database_name}_schema.docx)'
    )
    
    parser.add_argument(
        '--version', '-v',
        action='version',
        version=f'%(prog)s {__version__}',
        help='显示版本号并退出'
    )
    
    args = parser.parse_args()
    
    # 如果没有指定端口，根据数据库类型设置默认端口
    if args.port is None:
        if args.type == 'mysql':
            args.port = 3306
        elif args.type == 'postgresql':
            args.port = 5432
    
    return args

